<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    //  https://es6.ruanyifeng.com/#docs/set-map

    // set 是 es6 新的数据类型，翻译过来叫做集合
    // set 的值是唯一的，没有重复的值
    // 集合是数学上的概念，一组数的集合。有点类似数组，但是数组是有序的，集合是无序的

    const arr = [1, 2, 3, 4];
    console.log(arr);
    console.log(arr[2]);


    console.log('set 类型');

    const set = new Set();
    console.log(set, typeof set);
    // set 的长度 指的是集合里面的元素的个数
    console.log(' set 的长度', set.size);

    // 给集合增加元素
    set.add(1);
    set.add(2);
    set.add(3);
    set.add(11);
    set.add(12);
    set.add(12);

    console.log('set 集合里面的内容：', set);
    console.log(' set 的长度', set.size);

    // 判断元素是否存在
    console.log('set 集合里面的内容：', set.has(10));

    // 元素的删除
    set.delete(1);
    console.log('set 集合里面的内容：', set);

    // 集合遍历 for of
    for (let item of set) {
        console.log('集合遍历 for of', item);
    }

    // 清空集合
    set.clear();
    console.log('set 集合里面的内容：', set);


    // 集合可以完成数组的去重操作
    // 集合可以和数组相互的转换
    const arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 23, 2];
    console.log('去重前', arr1);
    /* 需求完成数组的去重 */

    /* 把一个数组作为参数传递给集合的时候，自动完成去重功能，
    因为集合里面的元素是唯一的，不允许重复 */
    const newSet = new Set(arr1)
    console.log('newSet', newSet);

    const newArr = [...newSet]; // 可以把一个集合转换为一个数组
    console.log('newArr', newArr);


</script>

</html>